package cn.tedu.http;


import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/**
 * Author：程Sir
 * Name： SmallServer
 * Content:
 *  类将来用于存放所有和HTTP协议相关的固定不变会被重用的内容
 */
public class HttpContext {
    // 创建一个可以根据后缀名找mime类型的集合
    private static Map<String,String> mimeMapping = new HashMap<>();
    static {
        try {
            initMimeType();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    /**
     * 对mimeMapping初始化
     */
    private static void initMimeType() throws IOException {
        // 读取config/web.xml文件中的内容
        File file = new File("config/web.xml");
        Document document = Jsoup.parse(file, "utf-8");
        // 通过document对象获取指定标签的集合对象
        Elements elements = document.getElementsByTag("mime-mapping");
        // 遍历集合中的元素对象
        for (Element element : elements){
            String text = element.text(); // "zmm application/vnd.handheld-entertainment+xml"
            String[] datas = text.split("\\s");
            String key = datas[0];
            String value = datas[1];
            // 将获得到的后缀和mimeType设置到数组中，完成mimeMapping数据组的初始化
            mimeMapping.put(key,value);
        }
        System.out.println(mimeMapping);
        System.out.println(mimeMapping.size());

    }

    public static void main(String[] args)  {

    }

    /**
     * 根据给定的资源后缀获取对应的Contenet-Type的值
     * @param key
     * @return
     */
    public static String getMimeType(String key){
        return mimeMapping.get(key);
    }
}
